package pqt;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.filechooser.FileNameExtensionFilter;

public class ModificarBalanza extends JFrame{
	
	final JTextField textFieldModelo;
	final JTextField textFieldDescripcion;
	final JTextField textFieldCodigo;
	JTextField textFieldNumeroSerie;
	final JButton btnAbrir = new JButton("...");
	final JPanel panelModificarBalanza = new JPanel();
	JLabel lblModelo = new JLabel("Modelo:");
	final JSpinner spinnerPesoMinimo = new JSpinner();
	final JSpinner spinnerPesoMedio = new JSpinner();
	final JSpinner spinnerPesoMaximo = new JSpinner();
	final JCheckBox activo = new JCheckBox("Activo");
	JPanel panelCentral = new JPanel();
	final JComboBox listadoBalanzas = new JComboBox();
	BaseDeDatos db = BaseDeDatos.getInstance();
	JButton btnAceptar = new JButton("Aceptar");
	Balanza balanzas[];
	//ArrayList <Balanza> myClass = new ArrayList<Balanza>();
	public ModificarBalanza(JPanel panelModificarBalanza) {
		
		panelModificarBalanza.setLayout(null);
		panelCentral.setLayout(null);
		panelCentral.setBounds(300, 50, 800, 500);
		panelCentral.setBorder(new TitledBorder(new LineBorder(new Color(51, 153, 255)), "Modificar Balanza", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panelModificarBalanza.add(panelCentral);
		
		
		
		JLabel label = new JLabel("Elija el modelo:");
		label.setFont(new Font("Tahoma", Font.PLAIN, 14));
		label.setBounds(50, 50, 197, 20);
		panelCentral.add(label);
		
		
		listadoBalanzas.setBounds(150, 53, 215, 20);
		listarBalanzas();
		panelCentral.add(listadoBalanzas);
		
		
	
		
		//-----------------------------------------Boton Cancelar----------------------------------------------
		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.setBounds(panelCentral.getX()+panelCentral.getWidth()-89, panelCentral.getY()+panelCentral.getHeight()+5, 89, 23);
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//tabbedPane.remove(panelModificarBalanza);
			}
		});
		panelModificarBalanza.add(btnCancelar);
		
		
		
		//-----------------------------------------Modelo-----------------------------------------------------
		
		
		lblModelo.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblModelo.setBounds(50, 100, 59, 23);
		panelCentral.add(lblModelo);
		
		textFieldModelo = new JTextField();
		textFieldModelo.setBounds(150, 103, 215, 23);
		panelCentral.add(textFieldModelo);
		textFieldModelo.setColumns(10);
		
		textFieldModelo.addKeyListener(new KeyAdapter() {
			 public void keyTyped(KeyEvent e) {
				 
				 if( textFieldModelo.getText().length()>50) {
					 e.consume();
				 }
			 }
		 });
		
		//-----------------------------------------Descripcion--------------------------------------------------
			
		JLabel lblDescripcion = new JLabel("Descripcion:");
		lblDescripcion.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblDescripcion.setBounds(50, 150, 89, 23);
		panelCentral.add(lblDescripcion);
		
		textFieldDescripcion = new JTextField();
		textFieldDescripcion.setBounds(150, 153, 215, 23);
		panelCentral.add(textFieldDescripcion);
		textFieldDescripcion.addKeyListener(new KeyAdapter() {
			 public void keyTyped(KeyEvent e) {
				 
				 if( textFieldDescripcion.getText().length()>50) {
					 e.consume();
				 }
			 }
		 });
		textFieldDescripcion.setColumns(10);
		
		//-----------------------------------------e1---------------------------------------------------------
		
		JLabel lblE1 = new JLabel("e1 (en g):");
		lblE1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblE1.setBounds(50, 200, 89, 23);
		panelCentral.add(lblE1);
		
		final JSpinner spinnerE1 = new JSpinner();
		spinnerE1.setModel(new SpinnerNumberModel(new Integer(0), new Integer(0), null, new Integer(1)));
		spinnerE1.setBounds(150, 203, 106, 20);
		panelCentral.add(spinnerE1);
		
		//----------------------------------------e2--------------------------------------------------------
		
		JLabel lblE2 = new JLabel("e2 (en g): ");
		lblE2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblE2.setBounds(50, 250, 70, 23);
		panelCentral.add(lblE2);
		
		final JSpinner spinnerE2 = new JSpinner();
		spinnerE2.setModel(new SpinnerNumberModel(new Integer(0), new Integer(0), null, new Integer(1)));
		spinnerE2.setBounds(150, 253, 106, 20);
		panelCentral.add(spinnerE2);
		
		//-------------------------------Peso minimo---------------------------------
		JLabel lblPesoMnimo = new JLabel("Peso M\u00EDnimo:");
		lblPesoMnimo.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblPesoMnimo.setBounds(50, 300, 89, 23);
		panelCentral.add(lblPesoMnimo);
		
		
		spinnerPesoMinimo.setModel(new SpinnerNumberModel(new Integer(0), new Integer(0), null, new Integer(1)));
		spinnerPesoMinimo.setBounds(150, 303, 106, 20);
		panelCentral.add(spinnerPesoMinimo);
		
		//----------------------------------------------------------------
		
		JLabel lblPesoMedio = new JLabel("Peso Medio:");
		lblPesoMedio.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblPesoMedio.setBounds(50, 350, 89, 23);
		panelCentral.add(lblPesoMedio);
		
		
		spinnerPesoMedio.setModel(new SpinnerNumberModel(new Integer(0), new Integer(0), null, new Integer(1)));
		spinnerPesoMedio.setBounds(150, 353, 106, 20);
		panelCentral.add(spinnerPesoMedio);
		
		//-----------------------Peso Maximo------------------------
		JLabel lblPesoMximo = new JLabel("Peso M\u00E1ximo:");
		lblPesoMximo.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblPesoMximo.setBounds(50, 400, 89, 23);
		panelCentral.add(lblPesoMximo);
		
		
		spinnerPesoMaximo.setModel(new SpinnerNumberModel(new Integer(0), new Integer(0), null, new Integer(1)));
		spinnerPesoMaximo.setBounds(150, 403, 106, 20);
		panelCentral.add(spinnerPesoMaximo);
		
		//-------------------------Codigo---------------
				
		JLabel lblNDeSerie = new JLabel("Codigo:");
		lblNDeSerie.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNDeSerie.setBounds(400, 100, 89, 20);
		panelCentral.add(lblNDeSerie);
		
		textFieldCodigo = new JTextField();
		textFieldCodigo.setColumns(10);
		textFieldCodigo.setBounds(500, 103, 215, 23);
		
		textFieldCodigo.addKeyListener(new KeyAdapter() {
			 public void keyTyped(KeyEvent e) {
				 
				 if( textFieldCodigo.getText().length()>50) {
					 e.consume();
				 }
			 }
		 });
		panelCentral.add(textFieldCodigo);
		
				
		//----------------------------------------Imagen---------------------------------------
		
		final JLabel lblImagen = new JLabel("Calibracion:");
		lblImagen.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblImagen.setBounds(400, 150, 89, 20);
		panelCentral.add(lblImagen);
		
		final JTextField calibracion = new JTextField();
		calibracion.setColumns(10);
		calibracion.setBounds(500, 153, 215, 23);
		calibracion.addKeyListener(new KeyAdapter() {
			 public void keyTyped(KeyEvent e) {
				 
				 if( calibracion.getText().length()>50) {
					 e.consume();
				 }
			 }
		 });
		panelCentral.add(calibracion);
		
		activo.setBounds(395, 53, 97, 23);
		panelCentral.add(activo);
		
		
		
		btnAceptar.setBounds(btnCancelar.getX()-100, panelCentral.getY()+panelCentral.getHeight()+5, 89, 23);
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				int index = listadoBalanzas.getSelectedIndex();
				String codigoAnterior = balanzas[index].getCodigo();
				balanzas[index].setDescripcion(textFieldDescripcion.getText());
				balanzas[index].setCargaMinima(Integer.parseInt(spinnerPesoMinimo.getValue().toString()));
				balanzas[index].setCargaLimite(Integer.parseInt(spinnerPesoMedio.getValue().toString()));
				balanzas[index].setCargaMaxima(Integer.parseInt(spinnerPesoMaximo.getValue().toString()));
				balanzas[index].setCodigo(textFieldCodigo.getText());
				balanzas[index].setE1(Integer.parseInt(spinnerE1.getValue().toString()));
				balanzas[index].setE2(Integer.parseInt(spinnerE2.getValue().toString()));
				balanzas[index].setModelo(textFieldModelo.getText());
				balanzas[index].setCalibracion(calibracion.getText());
				balanzas[index].setActiva(activo.isSelected());
				try {
					
					if(db.modificarBalanza(balanzas[index], codigoAnterior)) {
						//listadoBalanzas.removeAllItems();
						listarBalanzas();
					}
					
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				
			}
		});
		
		listadoBalanzas.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int index = listadoBalanzas.getSelectedIndex();
				if(index>=0){
				textFieldCodigo.setText(balanzas[index].getCodigo());
				textFieldModelo.setText(balanzas[index].getModelo());
				textFieldDescripcion.setText(balanzas[index].getDescripcion());
				spinnerE1.setValue(balanzas[index].getE1());
				spinnerE2.setValue(balanzas[index].getE2());
				spinnerPesoMaximo.setValue(balanzas[index].getCargaMaxima());
				spinnerPesoMedio.setValue(balanzas[index].getCargaLimite());
				spinnerPesoMinimo.setValue(balanzas[index].getCargaMinima());
				calibracion.setText(balanzas[index].getCalibracion());
				activo.setSelected(balanzas[index].isActiva());
				}
			}
		});
		
		panelModificarBalanza.add(btnAceptar);
		
	}
	
	private void listarBalanzas() {
		
		
		
		listadoBalanzas.removeAllItems();
		
		try {
			
			balanzas = db.consultarBalanzas(true);
			
			for(int i=0;i<balanzas.length;i++) {
				
				listadoBalanzas.addItem(balanzas[i].getCodigo());
				
			}
			
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		
	}

	
}
